package com.imut.lagain.entity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 关怀消息实体类
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("care_message")
public class CareMessage implements Serializable {
    private static final Logger log = LoggerFactory.getLogger(CareMessage.class);


    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 发送者用户ID
     */
    @TableField("from_user_id")
    private Long fromUserId;

    /**
     * 接收者用户ID
     */
    @TableField("to_user_id")
    private Long toUserId;

    /**
     * 关怀类型（comfort-舒适关怀，nutrition-营养关怀，exercise-运动关怀，emotional-情感关怀，practical-实用关怀）
     */
    @TableField("care_type")
    private String careType;

    /**
     * 消息内容
     */
    @TableField("message")
    private String message;

    /**
     * 消息类型（text-文本，image-图片，voice-语音，video-视频，reminder-提醒）
     */
    @TableField("message_type")
    private String messageType;

    /**
     * 生理期阶段（menstrual-月经期，follicular-卵泡期，ovulation-排卵期，luteal-黄体期）
     */
    @TableField("cycle_phase")
    private String cyclePhase;

    /**
     * 消息状态（sent-已发送，delivered-已送达，read-已读）
     */
    @TableField("status")
    private String status;

    /**
     * 是否为自动消息
     */
    @TableField("is_auto")
    private Boolean isAuto;

    /**
     * 附加数据（JSON格式）
     */
    @TableField("extra_data")
    private String extraData;

    /**
     * 阅读时间
     */
    @TableField("read_at")
    private LocalDateTime readAt;

    /**
     * 创建时间
     */
    @TableField(value = "created_at", fill = FieldFill.INSERT)
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    @TableField(value = "updated_at", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedAt;

    /**
     * 是否删除（0-未删除，1-已删除）
     */
    @TableLogic
    @TableField("is_deleted")
    private Integer isDeleted;
}
